<html>
<body>

<h3>函数功能</h3>该宏根据内存中的对话框模板资源创建一个模态的对话框。DialogBoxlndirect宏直到指定的回调函数通过调用EndDialog函数中止模态的对话框才能返回。DiaogBoxlndirect宏使用DialogBoxParam函数。<h3>函数原型</h3>int DialogBoxlndirect(HINSTANCE hlnstance,LPDLGTEMPLATE IpTemplate，HWND hWndParent，DLGPROClpDialogFunc）；<br>
<h3>参数</h3>
hlnstance：标识一个模块的事例，该模块创建对话框。<br>
IpTemplate：此参数指向含有一个模板的全局内存对象的指针。DialogBoxlndirect用此模板创建对话框。对话框模板由描述对话框的标题组成，跟随着标题之后的是描述每一个控制的一个或多个数据块，模板可以用标准格式或扩展格式。<br>
在标准模板中，标题是由DLGTEMPLATE结构跟随一个变长数组组成。每个控制的数据是由DLGTEMPLATE结构跟随一个变长数组组成。<br>
在扩展模板中，标题用DLGTEMPLATEEX格式，且控制定义用DLGITEMPLATEEX格式。<br>
HWndParent：指定拥有对话框的窗口。<br>
IpDialogFunc：指向对话框过程的指针。有关更详细的关于对话框过程的信息，请参见DialogProc。<br>
<h3>返回值</h3>如果函数调用成功则返回值为在对函数EndDialog的调用中的nResult参数,该EndDialog函数用于中止对话框。如果函数调用失败，则返回值为C1。 若想获得更多错误信息请调用GetLastError函数。<br>
备注：DialogBoxlndirect宏使用CreateWindowEx函数创建对话枢．然后把一个WM_INITDIALOG消息传递到对话框过程。如果模板指定DS_SETFONT类型DialogBoxlndirect函数将一个WM_SETFONT消息传递到对话框。（不管模板是否指定WS_VISIBLE类型），函数显示对话框使属主窗口失效，且为对话框启动它本身的消息循环来检索和传递消息。<br>
当对话框应用程序调用EndDialog 函数时，DialogBoxlndirect函数清除对话框，中止消息循环，使主窗口生效（如果以前有效）且返回EndDialog函数调用中的nResult参数。<br>
在标准对话框模板中，DLGTEMPLATE结构和每一个DLGITEMTEMPLATE结构必须按DWORD边界对齐，遵循DLGEMTEPLATE结构而创建的数据数组也一定按DWORD边界对齐。模板中其他所有变长数组一定要按DWORD边界进行调整。<br>
在扩展对话框模板上DLGTEMPLATEEX结构和每一个DLGITEMTEMPLATEEX结构必须按DWORD边界对齐，遵循DLGEMTEPLATE结构而创建的数据数组也一定按DWORD边界对齐。模板中其他所有变长数组一定要按DWORD边界进行调整。<br>
所有对话框模板的字符串，例如对话框和按钮的标题，一定是Unicode字符串。使用<br>
MultiByteToWidechar函数产生这些Unicode字符串可以创建在Windows和Windows NT两种系统上工作的代码。<br>
Windows 95和以后版本：系统可支持每个对话框模板最多为255个控制。为把多于255个控制放入对话框。可以在WM_INITDLAIOG消息处理器中创建控制，而不是把它们放入模板中。<br>
Windows CE：IpTemplateName参数指向的对话框模板中DLGTEMPLATE结构并不支持所有的类型。<br>
<h3>速查</h3>Windows NT:3.1 及以上版本；Windows：95及以上版本；Windows CE：1.0及以上版本；头文件：Winuser.h;库文件：user32.lib Unicode：在Windows NT上实现为Unicode和ANSI两种版本。<br>

</body>
</html>
